"""
Selenium ---> Appnium
用Python程序驱动浏览器工作，直接获取到页面加载动态内容之后的HTML代码，
要做到这一点需要三方库selenium的支持，这个库也被广泛的应用于自动化测试
~ Selenium IDE ---> 浏览器插件 ---> 录制用户操作然后重复播放
~ Selenium WebDriver ---> 驱动浏览器 ---> 模拟用户操作
~ Selenium Remote Control ---> 多机控制

pip install selenium
"""
import time

from selenium import webdriver

# 1. 创建浏览器对象
browser = webdriver.Chrome()
# 2. 指定URL加载页面
browser.get('https://image.so.com/')
# 设置一个隐式等待时间（当你获取元素的时候，如果元素暂时还没有出来，可以等待指定的时间）
browser.implicitly_wait(10)
# 通过ID获取
# 页面元素（输入框）
kw_input = browser.find_element_by_css_selector('#search_kw')
# 模拟用户输入行为
kw_input.send_keys('苍老师')
# 通过CSS选择器获取页面元素（按钮）
search_button = browser.find_element_by_css_selector('button[type="submit"]')
# 模拟用户点击行为
search_button.click()
# 模拟用户向下滚动页面
for _ in range(20):
    # 让浏览器执行JavaScript代码通过window对象控制垂直滚动条想下滚动
    browser.execute_script('window.scrollTo(0, window.scrollY + 1000)')
    time.sleep(0.2)
# 3. 通过浏览器对象的find_elements_by_xxx方法获取页面元素
imgs_list = browser.find_elements_by_css_selector('img')
print(len(imgs_list))
for img in imgs_list:
    # 4. 如果要获取标签里面的内容可以使用标签对象（WebElement）的text属性
    # 如果要获取的是标签的属性，可以使用标签对象的get_attribute方法
    print(img.get_attribute('src'))
